﻿using System.Collections.Generic;
using AOPDemo.Aspects;
using AOPDemo.Domain;

[assembly: AutoDataContract("http://services.bigbank.com/banking/v1#data", AttributeTargetTypes = "AOPDemo.Messages.*")]

namespace AOPDemo.Messages
{
    public class AuthenticateRequest : ServiceRequest
    {
        public string UserName { get; set; }
        public string Password { get; set; }
    }

    public class AuthenticateResponse : ServiceResponse
    {
        public AuthToken AuthToken { get; set; }
    }

    public class ServiceRequest
    {
        public AuthToken AuthToken { get; set; }
    }

    public class ServiceResponse
    {
        public bool Success { get; set; }
    }

    public class GetAccountsRequest : ServiceRequest
    {
    }

    public class GetAccountsResponse : ServiceResponse
    {
        public IList<Account> Accounts { get; set; }
    }

    public class SearchTransactionsRequest : ServiceRequest
    {
        public string AccountId { get; set; }
        public PagingContext PagingContext { get; set; }
    }

    public class SearchTransactionsResponse : ServiceResponse
    {
        public IList<Transaction> Transactions { get; set; }
    }

    public class TransferRequest : ServiceRequest
    {
        public string FromAccountId { get; set; }
        public string ToAccountId { get; set; }
        public decimal Amount { get; set; }
    }

    public class TransferResponse : ServiceResponse
    {
        public string TransferId { get; set; }
    }
}